label: Update selection node and redraw on state changes
authorAlexander Mikhaylenko <alexm@gnome.org>
Mon, 3 May 2021 20:25:36 +0000 (01:25 +0500)
committerAlexander Mikhaylenko <alexm@gnome.org>
Mon, 3 May 2021 21:29:10 +0000 (02:29 +0500)
Mirror GtkText and GtkTextView.

gtk/gtklabel.c

index 10d65667e920c0dd457f5e0ca8c376a6e56924d3..43a923d93e3b33808875bd1a18aac142a213ce22 100644 (file)
@@ -742,11 +742,22 @@ gtk_label_state_flags_changed (GtkWidget     *widget,
 
   if (self->select_info)
     {
+      GtkStateFlags state;
+
       if (!gtk_widget_is_sensitive (widget))
         gtk_label_select_region (self, 0, 0);
 
       gtk_label_update_cursor (self);
       update_link_state (self);
+
+      state = gtk_widget_get_state_flags (widget) & ~GTK_STATE_FLAG_DROP_ACTIVE;
+
+      if (self->select_info->selection_node)
+        {
+          gtk_css_node_set_state (self->select_info->selection_node, state);
+
+          gtk_widget_queue_draw (widget);
+        }
     }
 
   if (GTK_WIDGET_CLASS (gtk_label_parent_class)->state_flags_changed)